echo 命令的各种效果
echo 命令
echo 命令用于在 shell 中打印 shell 变量的值,或者直接输出指定的字符串,这个没啥好讲,但是这里主要介绍几个参数
-n 不换行输出
-e:激活转义字符。
这里不换行输出:
$echo -n "123"
$echo "456"
最终输出
123456
这个一般用做同时输出两个命令时
echo -n "The time and date are: "
date
#输出: The time and date are: Fri 11 Feb 2022 09:47:53 AM CST
-e 的使用 ⭐
使用 -e
选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
如下的特殊效果
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
打印带颜色的文字
用 echo 命令打印带有色彩的文字:
echo -e "\e[1;31mThis is red text\e[0m"
上面的命令意思:
\e[1;31m 将颜色设置为红色
\e[0m 将颜色重新置回
解释下如何使用:
\033[
:转义序列的开始。其中\033
代表Esc符号,也可以使用\E
或\e
来代替。\033[颜色1;颜色2m
:称为转义序列,它本身是一个整体,中间不要有空格。颜色1和颜色2
:表示字体的前景色或背景色,至于颜色1和颜色2哪一个表示前景色,哪一个表示背景色,由其设定的数值来决定,前景色和背景色的数值空间是不同的。m
:转义序列的终止标志。\033[0m
:表示将颜色恢复回原来的配色。
用一张原理图来理解:
所涉及的颜色如下(注意,数字 0
表示重置):
使用背景色
背景色:
echo -e "\e[1;42mGreed Background\e[0m"
颜色码:
- 重置=0
- 黑色=40
- 红色=41
- 绿色=42
- 黄色=43
- 蓝色=44
- 洋红=45
- 青色=46
- 白色=47
文字闪动效果
echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
下图是会闪的:
红色数字处还有其他数字参数:
- 0 关闭所有属性
- 1 设置高亮度(加粗)
- 4 下划线
- 5 闪烁
- 7 反显
- 8 消隐
编写成脚本,用时直接复制
#!/bin/sh
#定义颜色变量
RED='\E[1;31m' # 红
GREEN='\E[1;32m' # 绿
YELOW='\E[1;33m' # 黄
BLUE='\E[1;34m' # 蓝
PINK='\E[1;35m' # 粉红
SHAN='\E[33;5m' # 黄色闪烁警示
RES='\E[0m' # 清除颜色
#用echo -e来调用
#黄色闪烁警示调用效果
echo -e "${SHAN} this is yelow flashing warning ${RES}"
echo -e "${GREEN} this is green color ${RES}"
echo -e "${YELOW} this is red yelow ${RES}"
echo -e "${BLUE} this is blue color ${RES}"
echo -e "${PINK} this is pink color ${RES}"
定义颜色变量
#!/bin/sh
#定义颜色变量
RED='\E[1;31m' # 红
GREEN='\E[1;32m' # 绿
YELOW='\E[1;33m' # 黄
BLUE='\E[1;34m' # 蓝
PINK='\E[1;35m' # 粉红
RES='\E[0m' # 清除颜色
#用echo -e来调用
echo -e "${RED} this is red color ${RES}"
echo -e "${GREEN} this is green color ${RES}"
echo -e "${YELOW} this is red yelow ${RES}"
echo -e "${BLUE} this is blue color ${RES}"
echo -e "${PINK} this is pink color ${RES}"
打印的效果
定义颜色动作
#!/bin/sh
#定义颜色动作, 把echo -en也定义到变量中
SETCOLOR_SUCCESS="echo -en \\E[1;32m"
SETCOLOR_FAILURE="echo -en \\E[1;31m"
SETCOLOR_WARNING="echo -en \\E[1;33m"
SETCOLOR_NORMAL="echo -en \\E[0;39m"
#使用时直接调用颜色动作即可
$SETCOLOR_SUCCESS && echo SUCCESS
$SETCOLOR_FAILURE && echo FAILURE
$SETCOLOR_WARNING && echo WARNING
$SETCOLOR_NORMAL && echo NORMAL
说明:
定义颜色动作的方法和定义颜色变量的方法的思路类似,唯一不同的是我们把 echo
也加入到了定义中。这样用时不用频繁输入 echo
了,不过,需要注意其中的一些细节:
1)需要增加 -n
选项,这样引用时不会出现换行的问题。
2)\\
本质是 \
,在双引号中反斜线符号一定要写成 \\
。
3)引用变量要放到其他语句前面,并使用 &&
连接。
显示命令执行结果
# 注意:这里使用的是 `
echo `date`
结果将显示当前日期
Tue 15 Jun 2021 03:36:37 PM CST